2.2 定制指令

2.2.1 名词解析

  • 定制指令:区别于天琴内置语音指令的指令。集成端可通过AiLit自由定制的指令,享有最高触发优先级,触发后将会回调到配套的监听器中交由集成端处理。定制指令在唤醒后、交互中,才能够使用。

2.2.2 CommandWord

CommandWord是定制指令的实体类,其标识字段为指令说法,一种指令说法对应CommandWord。

2.2.3 静态注册

当指令较为固定时,集成端可将其写入文件中:

文件预设路径:module根目录/src/main/assets/custom_cmd.xml

//文件模板如下
<?xml version="1.0" encoding="utf-8"?>

<root>
    <cmd name="/customize/video/start">
        <word name="把录像开了"/>
        <word name="把录像打开"/>
    </cmd>
</root>

在保证预设路径下已经放置好静态指令后,在合适的时机(通常为语音就绪后)调用如下接口注册即可:

AiLitContext.getSpeechManager().addCommandWordFromXml(OnCommandTriggeredListener listener)

Tips:

  1. 入参为定制指令响应监听器,请勿传空否则指令无法处理;
  2. 回调方法的返回结果类型(ControlResponse),请见 4.1 ControlResponse 一节;

2.2.4 动态注册

当指令动态变化时,集成端可使用动态方法注册:

AiLitContext.getSpeechManager().addCommandWord(List<CommandWord> lstOfCommand, OnCommandTriggeredListener listener)

CommandWord 参考使用方式/格式:
new CommandWord("打开设置", "adapter.cmd.word.open_setting")
//command格式, 以"."连接, 描述明确: 来源.标识.类别.执行命令

Tips:

  1. 入参为定制指令响应监听器,请勿传空否则指令无法处理;
  2. 回调方法的返回结果类型(ControlResponse),请见 4.1 ControlResponse 一节;

2.2.5 动态注销

集成端可在不需要某条定制指令时,动态将其注销。但因为天琴内部原因,单独传说法或者指令标识都无法彻底注销,请保证入参中的实体类均包含说法(word)、指令标识(command)两个字段:

AiLitContext.getSpeechManager().removeCommandWord(List<CommandWord> )

results matching ""

    No results matching ""